#ifndef DIRECTION_H
#define DIRECTION_H

#include <string>

class Direction
{
public:
	enum DirectionType
	{
		NORTH,
		EAST,
		SOUTH,
		WEST
	};

	Direction(DirectionType newDirection = NORTH);
	Direction(const Direction& rhs);
	~Direction();

	bool IsNorth() const;
	bool IsSouth() const;
	bool IsEast() const;
	bool IsWest() const;

	void SetNorth();
	void SetSouth();
	void SetEast();
	void SetWest();

	DirectionType Type() const; 
	void SetType(DirectionType type); 
	Direction Opposed() const;

	void SetDirection(const Direction& newDirection);
	const Direction& operator=(const Direction& rhs);
	bool operator==(const Direction& rhs) const;
	bool operator!=(const Direction& rhs) const;

	std::string ToString() const;
	
protected:
private:
	DirectionType direction;
};

#endif //DIRECTION_H
